home *** CD-ROM | disk | FTP | other *** search
/ Aminet 43 / Aminet 43 (2001)(GTI - Schatztruhe)[!][Jun 2001].iso / Aminet / comm / mail / YAM22src.lha / YAM.h < prev    next >
C/C++ Source or Header  |  2000-11-03  |  48KB  |  1,461 lines

  1. /***************************************************************************
  2.  
  3.  YAM - Yet Another Mailer
  4.  Copyright (C) 2000  Marcel Beck <mbeck@yam.ch>
  5.  
  6.  This program is free software; you can redistribute it and/or modify
  7.  it under the terms of the GNU General Public License as published by
  8.  the Free Software Foundation; either version 2 of the License, or
  9.  (at your option) any later version.
  10.  
  11.  This program is distributed in the hope that it will be useful,
  12.  but WITHOUT ANY WARRANTY; without even the implied warranty of
  13.  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
  14.  GNU General Public License for more details.
  15.  
  16.  You should have received a copy of the GNU General Public License
  17.  along with this program; if not, write to the Free Software
  18.  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
  19.  
  20.  YAM Official Support Site :  http://www.yam.ch
  21.  YAM OpenSource project    :  http://sourceforge.net/projects/yamos/
  22.  
  23. ***************************************************************************/
  24.  
  25. #include "headers.h"
  26. #include "YAM_loc.h"
  27.  
  28. /// Defines
  29. #ifdef _M68060
  30. #define CPU " [060]"
  31. #else
  32. #ifdef _M68040
  33. #define CPU " [040]"
  34. #else
  35. #ifdef _M68020
  36. #define CPU " [020]"
  37. #else
  38. #define CPU ""
  39. #endif
  40. #endif
  41. #endif
  42. /* extern define YAMVER && YAMDATE */
  43. #define __VERSION__ YAMVER CPU
  44. #define __VERDATE__ YAMDATE
  45.  
  46. #define ANYBOX NULL
  47.  
  48. #define True  ((BOOL)TRUE)
  49. #define False ((BOOL)FALSE)
  50.  
  51. #define MAXP3 16
  52. #define MAXRU 100
  53. #define MAXMV 100
  54. #define MAXRX 21
  55.  
  56. #define FOCOLNUM 5
  57. #define MACOLNUM 7
  58. #define ABCOLNUM 9
  59.  
  60. #define MAXICONS  4
  61. #define MAXIMAGES 17
  62. #define MAXASL 8
  63. #define MAXERR 50
  64. #define MAXUSERS 16
  65. #define MAXCTYPE 25
  66. #define MAXCPAGES 15
  67. #define MAXEA 4
  68. #define MAXRE 4
  69. #define MAXWR 2
  70.  
  71. #define SIZE_USERID     60
  72. #define SIZE_PASSWORD   80
  73. #define SIZE_ADDRESS   100
  74. #define SIZE_HOST       80
  75. #define SIZE_REALNAME   40
  76. #define SIZE_SUBJECT   200
  77. #define SIZE_MSGID      80
  78. #define SIZE_MFILE      12
  79. #define SIZE_COMMAND   120
  80. #define SIZE_CTYPE      40
  81. #define SIZE_NAME       20
  82. #define SIZE_PATH      120
  83. #define SIZE_FILE       32
  84. #define SIZE_SMALL      16
  85. #define SIZE_DEFAULT    80
  86. #define SIZE_LARGE     512
  87. #define SIZE_LINE     1001
  88. #define SIZE_RCPTS    4096
  89. #define SIZE_INTRO     200
  90. #define SIZE_PATTERN   160
  91. #define SIZE_PATHFILE  SIZE_PATH+SIZE_FILE
  92. #define SIZE_URL       SIZE_HOST+SIZE_PATHFILE
  93.  
  94. #define AddrName(abentry) ((abentry).RealName[0]?(abentry).RealName:(abentry).Address)
  95. #define FolderName(fo)    ((fo) ? (fo)->Name : "?")
  96. #define MakeHook(hookname, funcname) struct Hook hookname = { {NULL, NULL}, (void *)funcname, NULL, NULL }
  97. #define BusyEnd           Busy("", NULL, 0, 0)
  98. #define OUTGOING(type)    (type == FT_OUTGOING || type == FT_SENT || type == FT_CUSTOMSENT)
  99. #define Virtual(mail)     (((mail)->Flags&MFLAG_NOFOLDER) == MFLAG_NOFOLDER)
  100.  
  101. #define DBG  printf("File %s, Func %s, Line %d\n",__FILE__,__FUNC__,__LINE__);
  102. #define DBGP DBG Delay(100);
  103. #define clear(p,l) memset((p), 0, (l));
  104.  
  105. #define REG(x) register __ ## x
  106. #define ASM    __asm
  107. #define SAVEDS __saveds
  108. #define STACKEXT __stackext
  109.  
  110. #define MUIA_Bodychunk_File          0x80002501
  111. #define MUIA_Bodychunk_UseOld        0x80002502
  112. #define MUIA_Slider_Weights          0x80002511
  113. #define MUIM_MainWindow_CloseWindow  0x80002521
  114. #define MUIA_Dtpic_Name              0x80423d72
  115. #define MUIM_GoActive                0x8042491a
  116. #define MUIM_GoInactive              0x80422c0c
  117.  
  118. #define MUIX_PC "\0335"
  119.  
  120. #define PGPLOGFILE "T:PGP.log"
  121. #define NOERRORS   16
  122. #define KEEPLOG    32
  123. #define CRYPTBYTE 164
  124.  
  125. #define MSG_Space ((APTR)1)
  126. #define OUT_NIL ((BPTR)1)
  127. #define POPCMD_WAITEOL 1
  128. #define POPCMD_NOERROR 2
  129. #define MFLAG_MULTIRCPT   1
  130. #define MFLAG_MULTIPART   2
  131. #define MFLAG_REPORT      4
  132. #define MFLAG_CRYPT       8
  133. #define MFLAG_SIGNED     16
  134. #define MFLAG_SENDERINFO 32
  135. #define MFLAG_SENDMDN    64
  136. #define MFLAG_NOFOLDER  128
  137. #define MDN_TYPEMASK  0x0F
  138. #define MDN_AUTOACT   0x10
  139. #define MDN_AUTOSEND  0x20
  140. #define PGPE_MIME     1
  141. #define PGPE_OLD      2
  142. #define PGPS_MIME     1
  143. #define PGPS_OLD      2
  144. #define PGPS_BADSIG   4
  145. #define PGPS_ADDRESS  8
  146. #define PGPS_CHECKED 16
  147. #define ASM_ALIAS    0
  148. #define ASM_REALNAME 1
  149. #define ASM_ADDRESS  2
  150. #define ASM_TYPEMASK 7
  151. #define ASM_USER     8
  152. #define ASM_LIST     16
  153. #define ASM_GROUP    32
  154. #define ASM_COMPLETE 64
  155. #define HIDE_INFO    1
  156. #define HIDE_XY      2
  157. #define HIDE_TBAR    4
  158. #define NOTI_REQ     1
  159. #define NOTI_SOUND   2
  160. #define NOTI_CMD     4
  161. #define ATTREQ_DISP  0
  162. #define ATTREQ_SAVE  1
  163. #define ATTREQ_PRINT 2
  164. #define ATTREQ_MULTI 32
  165. #define FOFL_MODIFY  1
  166. #define FOFL_FREEXS  2
  167. #define NEWF_QUIET 1
  168. #define NEWF_REP_NOQUOTE  2
  169. #define NEWF_REP_PRIVATE  4
  170. #define NEWF_REP_MLIST    8
  171. #define NEWF_FWD_NOATTACH 16
  172. ///
  173. /// WBPath.o Interface
  174. #define CloneWorkbenchPath(sm) cloneWorkbenchPath(SysBase, DOSBase, sm)
  175. #define FreeWorkbenchPath(path) freeWorkbenchPath(SysBase, DOSBase, path)
  176.  
  177. BPTR __stdargs cloneWorkbenchPath(struct ExecBase *, struct DosLibrary *, struct WBStartup *);
  178. void __stdargs freeWorkbenchPath(struct ExecBase *, struct DosLibrary *, BPTR);
  179. ///
  180. /// MD5.lib Interface
  181. typedef unsigned char *POINTER;
  182. typedef unsigned short int UINT2;
  183. typedef unsigned long int UINT4;
  184.  
  185. typedef struct
  186. {
  187.   UINT4 state[4];
  188.   UINT4 count[2];
  189.   unsigned char buffer[64];
  190. } MD5_CTX;
  191.  
  192. void MD5Init (MD5_CTX *);
  193. void MD5Update (MD5_CTX *, unsigned char *, unsigned int);
  194. void MD5Final (unsigned char [16], MD5_CTX *);
  195. ///
  196. /// bsdsocket.library Interface
  197. #define SMTP_NO_SOCKET -1
  198.  
  199. struct in_addr
  200. {
  201.    unsigned long s_addr;
  202. };
  203. struct sockaddr_in
  204. {
  205.    unsigned char sin_len;
  206.    unsigned char sin_family;
  207.    unsigned short sin_port;
  208.    struct in_addr sin_addr;
  209.    char sin_zero[8];
  210. };
  211. struct hostent
  212. {
  213.    char *h_name;
  214.    char **h_aliases;
  215.    int h_addrtype;
  216.    int h_length;
  217.    char **h_addr_list;
  218. #define h_addr h_addr_list[0]
  219. };
  220.  
  221. extern LONG Shutdown(LONG, LONG);
  222. extern LONG CloseSocket(LONG);
  223. extern struct hostent *GetHostByName(UBYTE *);
  224. extern LONG Socket(LONG, LONG, LONG);
  225. extern LONG Connect(LONG, struct sockaddr *, LONG);
  226. extern LONG Recv(LONG, UBYTE *, LONG, LONG);
  227. extern LONG Send(LONG, UBYTE *, LONG, LONG);
  228.  
  229. #pragma libcall SocketBase Socket 1E 21003
  230. #pragma libcall SocketBase Connect 36 18003
  231. #pragma libcall SocketBase Send 42 218004
  232. #pragma libcall SocketBase Recv 4E 218004
  233. #pragma libcall SocketBase Shutdown 54 1002
  234. #pragma libcall SocketBase CloseSocket 78 001
  235. #pragma libcall SocketBase GetHostByName D2 801
  236. ///
  237. /// Configuration sub-structures
  238. struct POP3
  239. {
  240.    char  Account[SIZE_USERID+SIZE_HOST];
  241.    char  Server[SIZE_HOST];
  242.    char  User[SIZE_USERID];
  243.    char  Password[SIZE_USERID];
  244.    BOOL  Enabled;
  245.    BOOL  UseAPOP;
  246.    BOOL  DeleteOnServer;
  247. };
  248.  
  249. struct MimeView
  250. {
  251.    char  ContentType[SIZE_CTYPE];
  252.    char  Command[SIZE_COMMAND];
  253.    char  Extension[SIZE_NAME];
  254. };
  255.  
  256. struct Folder
  257. {
  258.    char  Name[SIZE_NAME];
  259.    char  Path[SIZE_PATH];
  260.    char  Password[SIZE_USERID];   
  261.    char  MLPattern[SIZE_PATTERN];
  262.    char  MLAddress[SIZE_ADDRESS];
  263.    int   Type, XPKType;
  264.    int   Total, New, Unread;
  265.    int   Size;
  266.    int   Sort[2];
  267.    int   MaxAge;
  268.    int   LastActive;
  269.    int   LoadedMode;
  270.    int   SortIndex;
  271.    ULONG Flags;
  272.    struct Mail *Messages;
  273. };
  274.  
  275. struct Rule
  276. {
  277.    char  Name[SIZE_NAME];
  278.    BOOL  Remote;
  279.    BOOL  ApplyToNew;
  280.    BOOL  ApplyOnReq;
  281.    BOOL  ApplyToSent;
  282.    int   Combine;
  283.    int   Field[2];
  284.    int   SubField[2];
  285.    char  CustomField[2][SIZE_DEFAULT];
  286.    int   Comparison[2];
  287.    char  Match[2][SIZE_PATTERN];
  288.    BOOL  CaseSens[2];
  289.    BOOL  Substring[2];
  290.    int   Actions;
  291.    char  BounceTo[SIZE_ADDRESS];
  292.    char  ForwardTo[SIZE_ADDRESS];
  293.    char  ReplyFile[SIZE_PATHFILE];
  294.    char  ExecuteCmd[SIZE_COMMAND];
  295.    char  PlaySound[SIZE_PATHFILE];
  296.    char  MoveTo[SIZE_NAME];
  297.    char  **PatternsFromList;
  298. };       
  299.  
  300. struct RxHook
  301. {
  302.    char  Name[SIZE_NAME];
  303.    char  Script[SIZE_PATHFILE];
  304.    BOOL  IsAmigaDOS;
  305.    BOOL  UseConsole;
  306.    BOOL  WaitTerm;
  307. };
  308.  
  309. struct TranslationTable
  310. {
  311.    char Name[SIZE_DEFAULT];
  312.    char File[SIZE_PATHFILE];
  313.    char SourceCharset[SIZE_NAME], DestCharset[SIZE_NAME];
  314.    BOOL Header;
  315.    UBYTE Table[256];
  316. };
  317.  
  318. struct Column
  319. {
  320.    char *Name;
  321.    int   Index;
  322.    int   DefWidth;
  323.    int   Width;
  324.    int   Position;
  325.    BOOL  Show;
  326. };
  327. ///
  328. /// Configuration main structure
  329. struct Config
  330. {
  331.    char  RealName[SIZE_REALNAME]; /*0*/
  332.    char  EmailAddress[SIZE_ADDRESS];
  333.    int   TimeZone;
  334.    BOOL  DaylightSaving;
  335.    char  SMTP_Server[SIZE_HOST]; /*1*/
  336.    char  SMTP_Domain[SIZE_HOST];
  337.    BOOL  Allow8bit;
  338.    struct POP3 *P3[MAXP3];
  339.    BOOL  AvoidDuplicates; /*2*/
  340.    int   PreSelection;
  341.    int   TransferWindow;
  342.    BOOL  UpdateStatus;
  343.    int   WarnSize;
  344.    int   CheckMailDelay;
  345.    BOOL  DownloadLarge;
  346.    int   NotifyType;
  347.    char  NotifySound[SIZE_PATHFILE];
  348.    char  NotifyCommand[SIZE_COMMAND];
  349.    struct Rule *RU[MAXRU]; /*3*/
  350.    int   ShowHeader; /*4*/
  351.    char  ShortHeaders[SIZE_PATTERN];
  352.    int   ShowSenderInfo;
  353.    struct MUI_PenSpec ColoredText;
  354.    struct MUI_PenSpec Color2ndLevel;
  355.    BOOL  DisplayAllTexts;
  356.    BOOL  FixedFontEdit;
  357.    BOOL  MultipleWindows;
  358.    int   SigSepLine;
  359.    BOOL  UseTextstyles;
  360.    BOOL  WrapHeader;
  361.    char  TranslationIn[SIZE_PATHFILE];
  362.    char  ReplyTo[SIZE_ADDRESS]; /*5*/
  363.    char  Organization[SIZE_DEFAULT];
  364.    char  ExtraHeaders[SIZE_LARGE];
  365.    char  NewIntro[SIZE_INTRO];
  366.    char  Greetings[SIZE_INTRO];
  367.    char  TranslationOut[SIZE_PATHFILE];
  368.    int   EdWrapCol;
  369.    int   EdWrapMode;
  370.    char  Editor[SIZE_PATHFILE];
  371.    BOOL  LaunchAlways;
  372.    char  ReplyHello[SIZE_INTRO]; /*6*/
  373.    char  ReplyIntro[SIZE_INTRO];
  374.    char  ReplyBye[SIZE_INTRO];
  375.    char  AltReplyHello[SIZE_INTRO];
  376.    char  AltReplyIntro[SIZE_INTRO];
  377.    char  AltReplyBye[SIZE_INTRO];
  378.    char  AltReplyPattern[SIZE_PATTERN];
  379.    char  MLReplyHello[SIZE_INTRO];
  380.    char  MLReplyIntro[SIZE_INTRO];
  381.    char  MLReplyBye[SIZE_INTRO];
  382.    char  ForwardIntro[SIZE_INTRO];
  383.    char  ForwardFinish[SIZE_INTRO];
  384.    BOOL  QuoteMessage;
  385.    char  QuoteText[SIZE_SMALL];
  386.    BOOL  QuoteEmptyLines;
  387.    BOOL  CompareAddress;
  388.    BOOL  StripSignature;
  389.    BOOL  UseSignature; /*7*/
  390.    char  TagsFile[SIZE_PATHFILE];
  391.    char  TagsSeparator[SIZE_SMALL];
  392.    int   FolderCols; /*8*/
  393.    int   MessageCols;
  394.    BOOL  FixedFontList;
  395.    BOOL  SwatchBeat;
  396.    char  PGPCmdPath[SIZE_PATH]; /*9*/
  397.    char  MyPGPID[SIZE_DEFAULT];
  398.    BOOL  EncryptToSelf;
  399.    char  ReMailer[SIZE_ADDRESS];
  400.    char  RMCommands[SIZE_INTRO];
  401.    char  LogfilePath[SIZE_PATH];
  402.    int   LogfileMode;
  403.    BOOL  SplitLogfile;
  404.    BOOL  LogAllEvents;
  405.    BOOL  GetOnStartup; /*10*/
  406.    BOOL  SendOnStartup;
  407.    BOOL  CleanupOnStartup;
  408.    BOOL  RemoveOnStartup;
  409.    BOOL  LoadAllFolders;
  410.    BOOL  UpdateNewMail;
  411.    BOOL  CheckBirthdates;
  412.    BOOL  SendOnQuit;
  413.    BOOL  CleanupOnQuit;
  414.    BOOL  RemoveOnQuit;
  415.    struct MimeView *MV[MAXMV]; /*11*/
  416.    BOOL  IdentifyBin;
  417.    char  DetachDir[SIZE_PATH];
  418.    char  AttachDir[SIZE_PATH];
  419.    char  GalleryDir[SIZE_PATH]; /*12*/
  420.    char  MyPictureURL[SIZE_URL];
  421.    BOOL  AddMyInfo;
  422.    int   AddToAddrbook;
  423.    char  NewAddrGroup[SIZE_NAME];
  424.    char  ProxyServer[SIZE_HOST];
  425.    int   AddrbookCols;
  426.    BOOL  UseCManager;
  427.    struct RxHook RX[MAXRX]; /*13*/
  428.    char  TempDir[SIZE_PATH]; /*14*/
  429.    char  PackerCommand[SIZE_COMMAND];
  430.    int   IconPositionX, IconPositionY;
  431.    BOOL  IconifyOnQuit;
  432.    BOOL  Confirm;
  433.    int   ConfirmDelete;
  434.    BOOL  RemoveAtOnce;
  435.    BOOL  SaveSent;
  436.    int   MDN_Display;
  437.    int   MDN_Process;
  438.    int   MDN_Delete;
  439.    int   MDN_Filter;
  440.    BOOL  SendMDNAtOnce;
  441.    char  XPKPack[5];
  442.    char  XPKPackEncrypt[5];
  443.    int   XPKPackEff;
  444.    int   XPKPackEncryptEff;
  445.    int   LetterPart; /*Hidden*/
  446.    int   WriteIndexes;
  447.    int   AutoSave;
  448.    char  SupportSite[SIZE_HOST];
  449.    BOOL  JumpToNewMsg;
  450.    BOOL  PrinterCheck;
  451.    int   HideGUIElements;
  452.    char  LocalCharset[SIZE_CTYPE];
  453.    BOOL  IsOnlineCheck;
  454.    char  IOCInterface[SIZE_SMALL];
  455.    BOOL  ConfirmOnQuit;
  456.    int   StackSize;
  457. };
  458. ///
  459. /// Miscellaneous structures
  460. struct RuleResult
  461. {
  462.    long Checked;
  463.    long Bounced, Forwarded, Replied, Executed, Moved, Deleted;
  464. };
  465.  
  466. struct DownloadResult
  467. {
  468.    BOOL Error;
  469.    long Downloaded, OnServer, DupSkipped, Deleted;
  470. };
  471.  
  472. struct Data2D
  473. {
  474.    int Allocated;
  475.    int Used;
  476.    char **Data;
  477. };
  478.  
  479. struct Person
  480. {       
  481.    char Address[SIZE_ADDRESS];
  482.    char RealName[SIZE_REALNAME];
  483. };
  484.  
  485. struct ABEntry
  486. {
  487.    char Address[SIZE_ADDRESS];
  488.    char RealName[SIZE_REALNAME];
  489.    char Comment[SIZE_DEFAULT];
  490.    char Alias[SIZE_NAME];
  491.    char Phone[SIZE_DEFAULT];
  492.    char Street[SIZE_DEFAULT];
  493.    char City[SIZE_DEFAULT];
  494.    char Country[SIZE_DEFAULT];
  495.    char Homepage[SIZE_URL];
  496.    long BirthDay;
  497.    char PGPId[SIZE_ADDRESS];
  498.    char Photo[SIZE_PATHFILE];
  499.    char *Members;
  500.    int  Type;
  501. };
  502.  
  503. struct MailInfo
  504. {
  505.    int   Pos;
  506.    char *FName;
  507.    BOOL  Display;
  508. };
  509.  
  510. struct Mail
  511. {
  512.    struct Mail *Next;
  513.    struct Folder *Folder;
  514.    struct Person From;
  515.    struct Person To;
  516.    struct Person ReplyTo;
  517.    int    Flags;
  518.    char   Subject[SIZE_SUBJECT];
  519.    char   MailFile[SIZE_MFILE];
  520.    struct DateStamp Date;
  521.    char   Status;
  522.    char   Importance;
  523.    long   cMsgID, cIRTMsgID;
  524.    char  *UIDL;
  525.    int    Position;
  526.    int    Index;
  527.    long   Size;
  528.    struct Mail *Reference;
  529. };
  530.  
  531. struct ExtendedMail
  532. {
  533.    struct Mail   Mail;
  534.    struct Person *STo;
  535.    struct Person *CC;
  536.    struct Person *BCC;
  537.    int NoSTo, NoCC, NoBCC;
  538.    struct Person ReceiptTo;
  539.    struct Person OriginalRcpt;
  540.    int    ReceiptType;
  541.    char   MsgID[SIZE_MSGID];
  542.    char   IRTMsgID[SIZE_MSGID];
  543.    BOOL   DelSend, RetRcpt;
  544.    int    Signature;
  545.    int    Security;
  546.    char  *Headers;
  547.    char  *SenderInfo;
  548. };
  549.         
  550. struct ComprMail
  551. {
  552.    int    Flags;
  553.    char   MailFile[SIZE_MFILE];
  554.    struct DateStamp Date;
  555.    char   Status;
  556.    char   Importance;
  557.    long   cMsgID, cIRTMsgID;
  558.    long   Size;
  559.    int    MoreBytes;
  560. };
  561.  
  562. struct Attach
  563. {
  564.    char FilePath[SIZE_PATHFILE];
  565.    char Name[SIZE_FILE];
  566.    int  Size;
  567.    BOOL IsMIME;
  568.    char ContentType[SIZE_CTYPE];
  569.    char Description[SIZE_DEFAULT];
  570.    BOOL IsTemp;
  571. };
  572.  
  573. struct WritePart
  574. {
  575.    struct WritePart *Next;
  576.    char *ContentType, *Filename, *Description, *Name;
  577.    int   EncType;
  578.    BOOL  IsTemp;
  579.    struct TranslationTable *TTable;
  580. };
  581.  
  582. struct TempFile
  583. {
  584.    char Filename[SIZE_PATHFILE];
  585.    FILE *FP;
  586. };
  587.  
  588. struct Compose
  589. {
  590.    FILE *FH;
  591.    char *MailTo;
  592.    char *MailCC;
  593.    char *MailBCC;
  594.    char *From;
  595.    char *ReplyTo;
  596.    char *RealName;
  597.    char *Subject;
  598.    char *ExtHeader;
  599.    char *IRTMsgID;
  600.    int  Mode;
  601.    int  Importance;
  602.    int  Signature;
  603.    int  Security, OldSecurity;
  604.    int  Receipt;
  605.    int  ReportType;
  606.    BOOL DelSend;
  607.    BOOL UserInfo;
  608.    struct WritePart *FirstPart;
  609.    struct Mail *OrigMail;
  610. };
  611.  
  612. struct Part
  613. {
  614.    struct Part *Prev;
  615.    struct Part *Next;
  616.    struct Part *NextSelected;
  617.    int  Win;
  618.    char Name[SIZE_FILE];
  619.    char Description[SIZE_DEFAULT];
  620.    char *ContentType;
  621.    char Filename[SIZE_PATHFILE];
  622.    char Boundary[SIZE_DEFAULT];
  623.    char *JunkParameter;
  624.    char *CParName, *CParBndr, *CParProt, *CParDesc, *CParRType, *CParCSet;
  625.    int  EncodingCode;
  626.    int  MaxHeaderLen;
  627.    int  Size;
  628.    int  Nr;
  629.    BOOL HasHeaders;
  630.    BOOL Printable;
  631.    BOOL Decoded;
  632. };
  633.  
  634. struct TransStat
  635. {
  636.    int Msgs_Tot, Msgs_Done;
  637.    long Size_Tot, Size_Done, Size_Curr, Delay;
  638.    long Clock_Start, Clock_Last;
  639. };
  640.  
  641. struct Dict
  642. {
  643.    char Alias[SIZE_NAME];
  644.    char *Text;
  645. };
  646.  
  647. struct Users
  648. {
  649.    int Num, CurrentID;
  650.    struct User
  651.    {
  652.       char Name[SIZE_NAME];
  653.       char Password[SIZE_USERID];
  654.       char MailDir[SIZE_PATH];
  655.       BOOL Limited, UseAddr, UseDict, Clone, IsNew;
  656.       int ID;
  657.    } User[MAXUSERS];
  658. };
  659.  
  660. struct Search
  661. {
  662.    int  Mode, PersMode, Compare, Status, Fast;
  663.    BOOL CaseSens, SubString;
  664.    char Match[SIZE_PATTERN+4], PatBuf[SIZE_PATTERN], *Pattern;
  665.    char Field[SIZE_DEFAULT];
  666.    struct DateTime DT;
  667.    struct Data2D List;
  668.    struct Rule *Rule;
  669.    long Size;
  670. };
  671.  
  672. struct BodyChunkData
  673. {
  674.    ULONG *Colors;
  675.    UBYTE *Body;
  676.    int Width, Height, Depth;
  677.    int Compression, Masking;
  678.    char File[SIZE_NAME];
  679. };
  680.  
  681. struct ExpandTextData
  682. {
  683.    char *OS_Name;
  684.    char *OS_Address;
  685.    char *OM_Subject;
  686.    struct DateStamp *OM_Date;
  687.    char *OM_MessageID;
  688.    char *R_Name;
  689.    char *R_Address;
  690.    char *HeaderFile;
  691. };
  692.  
  693. struct PageList
  694. {
  695.    int Offset;
  696.    APTR Label;
  697. };
  698.  
  699. struct FIndex
  700. {
  701.    ULONG ID;
  702.    int   Total, New, Unread;
  703.    int   Size;
  704.    long  reserved[2];
  705. };
  706. ///
  707. /// Module Classes
  708. struct SearchGroup
  709. {
  710.    APTR PG_SRCHOPT, CY_MODE, ST_FIELD, CY_COMP[5], ST_MATCH[5], BT_FILE[5], BT_EDIT[5];
  711.    APTR RA_ADRMODE, CY_STATUS, CH_CASESENS[5], CH_SUBSTR[5];
  712. };
  713.  
  714. struct MA_ClassData  /* main window */
  715. {
  716.    struct MA_GUIData
  717.    {
  718.       APTR WI, MN_FOLDER, MN_REXX, MS_MAIN, BC_STAT[17], ST_LAYOUT;
  719.       APTR MI_ERRORS, MI_CSINGLE, MI_IMPORT, MI_EXPORT, MI_SENDALL, MI_EXCHANGE, MI_GETMAIL, MI_READ, MI_EDIT, MI_MOVE, MI_COPY, MI_DELETE, MI_PRINT, MI_SAVE, MI_ATTACH, MI_SAVEATT, MI_REMATT, MI_EXPMSG;
  720.       APTR MI_REPLY, MI_FORWARD, MI_BOUNCE, MI_GETADDRESS, MI_STATUS, MI_TOREAD, MI_TOUNREAD, MI_TOHOLD, MI_TOQUEUED, MI_CHSUBJ, MI_SEND;
  721.       APTR LV_FOLDERS, NL_FOLDERS, LV_MAILS, NL_MAILS, TO_TOOLBAR, GA_INFO;
  722.       struct MUIP_Toolbar_Description TB_TOOLBAR[18];
  723.    } GUI;
  724.    char WinTitle[SIZE_DEFAULT];
  725. };
  726.  
  727. struct CO_ClassData  /* configuration window */
  728. {
  729.    struct CO_GUIData
  730.    {
  731.       APTR WI, BT_SAVE, BT_USE, BT_CANCEL;
  732.       APTR MI_IMPMIME, LV_PAGE, GR_PAGE, GR_SUBPAGE;
  733. /*0*/      APTR ST_REALNAME, ST_EMAIL, ST_POPHOST0, ST_PASSWD0, CY_TZONE, CH_DLSAVING;
  734. /*1*/      APTR ST_SMTPHOST, ST_DOMAIN, CH_SMTP8BIT, LV_POP3, GR_POP3, BT_PADD, BT_PDEL, ST_POPHOST, ST_POPUSERID, ST_PASSWD, CH_DELETE, CH_USEAPOP, CH_POPENABLED;
  735. /*2*/      APTR CH_AVOIDDUP, CY_MSGSELECT, CY_TRANSWIN, CH_UPDSTAT, ST_WARNSIZE, ST_INTERVAL, CH_DLLARGE, CH_NOTIREQ, CH_NOTISOUND, CH_NOTICMD, ST_NOTISOUND, ST_NOTICMD;
  736. /*3*/      APTR LV_RULES, BT_RADD, BT_RDEL, ST_RNAME, CH_REMOTE, CY_COMBINE[2], GR_LRGROUP, GR_LOCAL, GR_REMOTE, PO_MOVETO, TX_MOVETO, LV_MOVETO, CH_APPLYNEW, CH_APPLYREQ, CH_APPLYSENT, CH_ABOUNCE, ST_ABOUNCE, CH_AFORWARD, ST_AFORWARD, CH_ARESPONSE, ST_ARESPONSE, CH_AEXECUTE, ST_AEXECUTE, CH_APLAY, ST_APLAY, CH_AMOVE, CH_ADELETE, CH_ASKIP;
  737.            struct SearchGroup GR_SEARCH[4];
  738. /*4*/      APTR CY_HEADER, ST_HEADERS, CY_SENDERINFO, CY_SIGSEPLINE, CA_COLTEXT, CA_COL2QUOT, CH_FIXFEDIT, CH_ALLTEXTS, CH_MULTIWIN, CH_WRAPHEAD, CH_TEXTSTYLES, ST_INTRANS;
  739. /*5*/      APTR ST_REPLYTO, ST_ORGAN, ST_EXTHEADER, ST_HELLOTEXT, ST_BYETEXT, ST_OUTTRANS, ST_EDWRAP, CY_EDWRAP, ST_EDITOR, CH_LAUNCH;
  740. /*6*/      APTR ST_REPLYHI, ST_REPLYTEXT, ST_REPLYBYE, ST_AREPLYHI, ST_AREPLYTEXT, ST_AREPLYBYE, ST_AREPLYPAT, ST_MREPLYHI, ST_MREPLYTEXT, ST_MREPLYBYE, CH_QUOTE, ST_REPLYCHAR, CH_QUOTEEMPTY, CH_COMPADDR, CH_STRIPSIG, ST_FWDSTART, ST_FWDEND;
  741. /*7*/      APTR CH_USESIG, CY_SIGNAT, BT_SIGEDIT, TE_SIGEDIT, BT_INSTAG, BT_INSENV, ST_TAGFILE, ST_TAGSEP;
  742. /*8*/      APTR CH_FCOLS[FOCOLNUM], CH_MCOLS[MACOLNUM], CH_FIXFLIST, CH_BEAT;
  743. /*9*/     APTR ST_PGPCMD, ST_MYPGPID, CH_ENCSELF, ST_REMAILER, ST_FIRSTLINE, ST_LOGFILE, CY_LOGMODE, CH_SPLITLOG, CH_LOGALL;
  744. /*10*/     APTR CH_POPSTART, CH_SENDSTART, CH_DELETESTART, CH_REMOVESTART, CH_LOADALL, CH_MARKNEW, CH_CHECKBD, CH_SENDQUIT, CH_DELETEQUIT, CH_REMOVEQUIT;
  745. /*11*/     APTR LV_MIME, GR_MIME, ST_CTYPE, ST_EXTENS, ST_COMMAND, ST_DEFVIEWER, BT_MADD, BT_MDEL, CH_IDENTBIN, ST_DETACHDIR, ST_ATTACHDIR;
  746. /*12*/     APTR ST_GALLDIR, ST_PROXY, ST_PHOTOURL, CH_ADDINFO, CY_ATAB, ST_NEWGROUP, CH_ACOLS[ABCOLNUM];
  747. /*13*/     APTR LV_REXX, ST_RXNAME, ST_SCRIPT, CY_ISADOS, CH_CONSOLE, CH_WAITTERM;
  748. /*14*/     APTR ST_TEMPDIR, ST_APPX, ST_APPY, CH_CLGADGET, CH_CONFIRM, NB_CONFIRMDEL, CH_REMOVE, CH_SAVESENT;
  749.            APTR RA_MDN_DISP, RA_MDN_PROC, RA_MDN_DELE, RA_MDN_RULE, CH_SEND_MDN, TX_PACKER, TX_ENCPACK, NB_PACKER, NB_ENCPACK, ST_ARCHIVER;
  750.    } GUI;
  751.    int VisiblePage;
  752.    int LastSig;
  753.    BOOL Visited[MAXCPAGES];
  754.    BOOL UpdateAll;
  755. };
  756.  
  757. struct FO_ClassData  /* folder configuration window */
  758. {
  759.    struct FO_GUIData
  760.    {
  761.       APTR WI;
  762.       APTR ST_FNAME, TX_FPATH, BT_MOVE, ST_MAXAGE, CY_FMODE, CY_FTYPE, CY_SORT[2], CH_REVERSE[2], ST_MLPATTERN, ST_MLADDRESS;
  763.    } GUI;
  764.    struct Folder *EditFolder;
  765. };
  766.  
  767. struct EA_ClassData  /* address book entry window */
  768. {
  769.    struct EA_GUIData
  770.    {
  771.       APTR WI;
  772.       APTR ST_ALIAS, ST_REALNAME, ST_ADDRESS, ST_COMMENT, ST_PHONE, ST_STREET, ST_CITY, ST_COUNTRY, ST_PGPKEY;
  773.       APTR ST_HOMEPAGE, ST_BIRTHDAY, GR_PHOTO, BC_PHOTO, BT_SELECTPHOTO, BT_LOADPHOTO;
  774.       APTR LV_MEMBER, ST_MEMBER, BT_ADD, BT_DEL;
  775.       APTR BT_OKAY, BT_CANCEL;
  776.    } GUI;
  777.    int  Type;
  778.    int  EntryPos;
  779.    char PhotoName[SIZE_PATHFILE];
  780.    struct MUIS_Listtree_TreeNode *EditNode;
  781. };
  782.  
  783. struct AB_ClassData  /* address book window */
  784. {
  785.    struct AB_GUIData
  786.    {
  787.       APTR WI;
  788.       APTR TO_TOOLBAR, LV_ADRESSES;
  789.       APTR BT_TO, BT_CC, BT_BCC;
  790.       struct MUIP_Toolbar_Description TB_TOOLBAR[13];
  791.    } GUI;
  792.    BOOL Modified;
  793.    int  Hits;
  794.    int  Mode;
  795.    int  SortBy;
  796.    char WTitle[SIZE_DEFAULT];
  797.    int  WrWin;
  798. };
  799.  
  800. struct RE_ClassData  /* read window */
  801. {
  802.    struct RE_GUIData
  803.    {
  804.       APTR WI;
  805.       APTR MI_EDIT, MI_DETACH, MI_CROP, MI_WRAPH, MI_TSTYLE, MI_EXTKEY, MI_CHKSIG, MI_SAVEDEC;
  806.       APTR GR_BODY, GR_HEAD, LV_HEAD, TO_TOOLBAR, TE_TEXT, SL_TEXT, GR_STATUS[6];
  807.       APTR GR_INFO, GR_PHOTO, BC_PHOTO, LV_INFO, BO_BALANCE;
  808.       struct MUIP_Toolbar_Description TB_TOOLBAR[13];
  809.    } GUI;
  810.    int               WindowNr;
  811.    struct Mail       Mail;
  812.    struct Mail      *MailPtr;
  813.    struct TempFile  *TempFile;
  814.    char              File[SIZE_PATHFILE];
  815.    FILE             *Fh;
  816.    struct Part      *FirstPart;
  817.    BOOL              FirstReadDone;
  818.    int               ParseMode;
  819.    int               Header;
  820.    int               SenderInfo;
  821.    BOOL              NoTextstyles, WrapHeader;
  822.    int               LastDirection;
  823.    BOOL              PGPKey;
  824.    int               PGPSigned, PGPEncrypted;
  825.    char              Signature[SIZE_ADDRESS];
  826.    char              WTitle[SIZE_DEFAULT];
  827. };
  828.  
  829. struct WR_ClassData  /* write window */
  830. {
  831.    struct WR_GUIData
  832.    {
  833.       APTR WI;
  834.       APTR RG_PAGE;
  835.       APTR ST_TO, ST_SUBJECT;
  836.       APTR TX_POSI, TE_EDIT, TO_TOOLBAR;
  837.       APTR LV_ATTACH;
  838.       APTR BT_ADD, BT_ADDPACK, BT_DEL, BT_DISPLAY;
  839.       APTR RA_ENCODING, CY_CTYPE, ST_CTYPE, ST_DESC;
  840.       APTR ST_CC, ST_BCC, ST_FROM, ST_REPLYTO, ST_EXTHEADER, CH_DELSEND, CH_RECEIPT, CH_DISPNOTI, CH_ADDINFO, CY_IMPORTANCE, RA_SECURITY, RA_SIGNATURE;
  841.       APTR BT_HOLD, BT_QUEUE, BT_SEND, BT_CANCEL;
  842.       struct MUIP_Toolbar_Description TB_TOOLBAR[13];
  843.    } GUI;
  844.    int                  WindowNr;
  845.    BOOL                 Bounce;
  846.    struct Mail         *Mail, **MList;
  847.    struct ABEntry      *ListEntry;
  848.    int                  Mode;
  849.    int                  OldSecurity;
  850.    int                  AS_Count;
  851.    BOOL                 AS_Done;
  852.    char                 MsgID[SIZE_MSGID];
  853.    char                 QuoteText[SIZE_DEFAULT];
  854.    char                 WTitle[SIZE_DEFAULT];
  855. };
  856.  
  857. struct TR_ClassData  /* transfer window */
  858. {
  859.    struct TR_GUIData
  860.    {
  861.       APTR  WI;
  862.       APTR  GR_LIST, GR_PAGE, LV_MAILS, BT_PAUSE, BT_RESUME, BT_QUIT, BT_START;
  863.       APTR  TX_STATS, TX_STATUS, GA_COUNT, GA_BYTES, BT_ABORT;
  864.       char *ST_STATUS;
  865.    } GUI;
  866.    struct Mail       *List;
  867.    struct Mail       *GMD_Mail;
  868.    struct Search     *Search[2*MAXRU];
  869.    struct DownloadResult Stats;
  870.    int                Scnt;
  871.    BOOL               Checking;
  872.    char              *UIDLloc;
  873.    BOOL               supportUIDL;
  874.    int                GMD_Line;
  875.    long               Abort, Pause, Start;
  876.    int                GUIlevel;
  877.    int                POP_Nr;
  878.    BOOL               SinglePOP;
  879.    struct Folder     *ImportBox;
  880.    char               WTitle[SIZE_DEFAULT];
  881.    char               ImportFile[SIZE_PATHFILE];
  882.    char               CountLabel[SIZE_DEFAULT];
  883.    char               BytesLabel[SIZE_DEFAULT];
  884.    char               StatsLabel[SIZE_DEFAULT];
  885. };
  886.  
  887. struct ER_ClassData  /* error window */
  888. {
  889.    struct ER_GUIData
  890.    {
  891.       APTR WI;
  892.       APTR LV_ERROR, BT_NEXT, NB_ERROR, BT_PREV;
  893.    } GUI;
  894. };
  895.  
  896. struct FI_ClassData  /* find window */
  897. {
  898.    struct FI_GUIData
  899.    {
  900.       APTR WI;
  901.       APTR LV_FOLDERS;
  902.       struct SearchGroup GR_SEARCH;
  903.       APTR LV_MAILS, GR_PAGE, GA_PROGRESS, BT_SELECT, BT_READ;
  904.    } GUI;
  905.   long Abort;
  906. };
  907.  
  908. struct DI_ClassData  /* glossary window */
  909. {
  910.    struct DI_GUIData
  911.    {
  912.       APTR WI;
  913.       APTR GR_LIST, GR_TEXT, LV_ENTRIES, ST_ALIAS, TE_EDIT, SL_EDIT;
  914.       APTR BT_NEW, BT_DELETE, BT_ADDSELECT, BT_PASTE;
  915.    } GUI;
  916.    BOOL Modified;
  917.    struct Dict *OldEntry;
  918.    int  WrWin;
  919. };
  920.  
  921. struct US_ClassData  /* user list window */
  922. {
  923.    struct US_GUIData
  924.    {
  925.       APTR WI;
  926.       APTR LV_USERS, BT_ADD, BT_DEL;
  927.       APTR PO_MAILDIR, ST_MAILDIR, ST_USER, ST_PASSWD, CH_USEDICT, CH_USEADDR, CH_CLONE, CH_ROOT;
  928.    } GUI;
  929.    BOOL Supervisor;
  930. };
  931.  
  932. struct UniversalClassData
  933. {
  934.    struct UniversalGUIData { APTR WI; } GUI;
  935. };
  936. ///
  937. /// Global Structure
  938. struct Global 
  939. {
  940.    BOOL                  Error;
  941.    BOOL                  PGP5;
  942.    BOOL                  DtpicSupported;
  943.    APTR                  App;
  944.    struct AppIcon       *AppIcon;
  945.    struct MsgPort       *AppPort;
  946.    struct RexxHost      *RexxHost;
  947.    struct DiskObject    *DiskObj[MAXICONS];
  948.    struct BodyChunkData *BImage[MAXIMAGES];
  949.    struct FileRequester *ASLReq[MAXASL];
  950.    struct Locale        *Locale;
  951.    struct DateStamp      StartDate;
  952.    int                   TotMsgs;
  953.    int                   NewMsgs;
  954.    BOOL                  AppIconQuiet;
  955.    int                   GM_Count, SI_Count;
  956.    char                  ProgDir[SIZE_PATH];
  957.    struct Users          Users;
  958.    int                   PGPVersion;
  959.    char                  PGPPassPhrase[SIZE_DEFAULT];
  960.    BOOL                  PGPPassVolatile;
  961.    long                  EdColMap[9];
  962.    long                  Weights[6];
  963.    struct TranslationTable *TTin, *TTout;
  964.    struct RuleResult      RRs;
  965.    struct DownloadResult  LastDL;
  966.    char                  MA_MailDir[SIZE_PATH];
  967.    struct MA_ClassData  *MA;
  968.    char                  CO_PrefsFile[SIZE_PATHFILE];
  969.    BOOL                  CO_Valid;
  970.    int                   CO_DST;
  971.    struct CO_ClassData  *CO;
  972.    char                  AB_Filename[SIZE_PATHFILE];
  973.    struct AB_ClassData  *AB;
  974.    struct EA_ClassData  *EA[MAXEA];
  975.    struct RE_ClassData  *RE[MAXRE+1];
  976.    struct WR_ClassData  *WR[MAXWR+1];
  977.    struct NotifyRequest  WR_NRequest[MAXWR];
  978.    char                  WR_Filename[3][SIZE_PATHFILE];
  979.    BOOL                  TR_Debug;
  980.    BOOL                  TR_Allow;
  981.    BOOL                  TR_Exchange;
  982.    int                   TR_Socket;
  983.    struct sockaddr_in    TR_INetSocketAddr;
  984.    struct TR_ClassData  *TR;
  985.    struct ER_ClassData  *ER;
  986.    char                 *ER_Message[MAXERR];
  987.    int                   ER_NumErr;
  988.    struct FI_ClassData  *FI;
  989.    struct FO_ClassData  *FO;
  990.    char                  DI_Filename[SIZE_PATHFILE];
  991.    struct DI_ClassData  *DI;
  992.    struct US_ClassData  *US;
  993.    APTR                  AY_Win, AY_Text, AY_Group, AY_List;
  994.    long                  ActiveReadWin, ActiveWriteWin;
  995. };
  996. ///
  997. /// MUI internal custom classes data
  998. struct DumData { long dummy; };
  999.  
  1000. struct CW_Data
  1001. {
  1002.    char Buf[32];
  1003.    BOOL Weights;
  1004. };
  1005.  
  1006. struct BC_Data
  1007. {
  1008.    struct BodyChunkData *BCD;
  1009. };
  1010.  
  1011. struct AL_Data 
  1012.    struct Hook DisplayHook;
  1013.    Object *Object;
  1014.    APTR Image;
  1015. };
  1016. struct PL_Data
  1017.    struct Hook DisplayHook;
  1018.    Object *Object[MAXCPAGES];
  1019.    APTR Image[MAXCPAGES];
  1020. };
  1021. struct WS_Data
  1022. {
  1023.    struct MUI_EventHandlerNode ehnode;
  1024. };
  1025. ///
  1026. /// Enumerations
  1027. enum { STATUS_UNR, STATUS_OLD, STATUS_FWD, STATUS_RPD, STATUS_WFS, STATUS_ERR, STATUS_HLD, STATUS_SNT, STATUS_NEW, STATUS_DEL, STATUS_LOA, STATUS_SKI };
  1028.  
  1029. enum { ENC_NONE, ENC_QP, ENC_B64, ENC_UUE, ENC_BIN, ENC_8BIT, ENC_FORM };
  1030.  
  1031. enum { CT_TX_PLAIN=0, CT_TX_HTML, CT_TX_GUIDE,
  1032.        CT_AP_OCTET, CT_AP_PS, CT_AP_RTF, CT_AP_LHA, CT_AP_LZX, CT_AP_ZIP, CT_AP_AEXE, CT_AP_SCRIPT, CT_AP_REXX,
  1033.        CT_IM_JPG, CT_IM_GIF, CT_IM_PNG, CT_IM_TIFF, CT_IM_ILBM,
  1034.        CT_AU_AU, CT_AU_8SVX, CT_AU_WAV,
  1035.        CT_VI_MPG, CT_VI_MOV, CT_VI_ANIM, CT_VI_AVI,
  1036.        CT_ME_EMAIL };
  1037.  
  1038. enum { PA_LOAD, PA_DELETE, PA_SKIP, 
  1039.        PM_ALL, PM_TEXTS, PM_NONE,
  1040.        ABM_EDIT, ABM_TO, ABM_CC, ABM_BCC, ABM_REPLYTO, ABM_FROM,
  1041.        ED_OPEN, ED_INSERT, ED_INSQUOT, ED_INSROT13, ED_PASQUOT, ED_PASROT13,
  1042.        DSS_DATE, DSS_TIME, DSS_WEEKDAY, DSS_DATETIME, DSS_USDATETIME, DSS_UNIXDATE, DSS_BEAT, DSS_DATEBEAT};
  1043.  
  1044. enum { AET_USER=0, AET_LIST, AET_GROUP };
  1045.  
  1046. enum { SEND_ALL=-2, SEND_ACTIVE, NEW_NEW, NEW_REPLY, NEW_FORWARD, NEW_BOUNCE, NEW_EDIT, NEW_SAVEDEC,
  1047.        POP_USER, POP_START, POP_TIMED, POP_REXX, APPLY_USER, APPLY_AUTO, APPLY_SENT, APPLY_REMOTE,
  1048.        APPLY_RX_ALL, APPLY_RX, WRITE_HOLD, WRITE_SEND, WRITE_QUEUE, RIM_QUIET, RIM_READ, RIM_EDIT,
  1049.        RIM_QUOTE, RIM_PRINT, TR_IMPORT,TR_EXPORT,TR_GET,TR_SEND, RCPT_TYPE_ALL, RCPT_TYPE_READ,
  1050.        ABF_USER, ABF_RX, ABF_RX_NAME, ABF_RX_EMAIL, ABF_RX_NAMEEMAIL,
  1051.        SO_SAVE, SO_RESET };
  1052.  
  1053. enum { ID_CLOSEALL=1000, ID_LOGIN, ID_RESTART, ID_ICONIFY };
  1054.  
  1055. enum { FT_CUSTOM=0, FT_INCOMING, FT_OUTGOING, FT_SENT, FT_DELETED, FT_SEPARATOR, FT_CUSTOMSENT, FT_CUSTOMMIXED, FT_GROUP };
  1056.  
  1057. enum { FS_NONE=0, FS_FROM, FS_TO, FS_CC, FS_REPLYTO, FS_SUBJECT, FS_DATE, FS_SIZE };
  1058.  
  1059. enum { ASL_ABOOK=0, ASL_CONFIG, ASL_DETACH, ASL_ATTACH, ASL_REXX, ASL_PHOTO, ASL_IMPORT, ASL_FOLDER };
  1060.  
  1061. enum { MDN_IGNORE=0, MDN_DENY, MDN_READ, MDN_DISP, MDN_PROC, MDN_DELE };
  1062.  
  1063. enum { MACRO_MEN0=0, MACRO_MEN1, MACRO_MEN2, MACRO_MEN3, MACRO_MEN4, MACRO_MEN5,
  1064.        MACRO_MEN6, MACRO_MEN7, MACRO_MEN8, MACRO_MEN9, MACRO_STARTUP, MACRO_QUIT,
  1065.        MACRO_PREGET, MACRO_POSTGET, MACRO_NEWMSG, MACRO_PRESEND, MACRO_POSTSEND,
  1066.        MACRO_READ, MACRO_PREWRITE, MACRO_POSTWRITE, MACRO_URL };
  1067.  
  1068. ///
  1069. /// Declaration of external variables
  1070. __near extern struct Library *LocaleBase;
  1071. extern struct Library *DataTypesBase, *MUIMasterBase, *SocketBase, *XpkBase, *OpenURLBase, *CManagerBase;
  1072. extern struct ExecBase *SysBase;
  1073. extern struct DosLibrary *DOSBase;
  1074. extern struct Global *G;
  1075. extern struct Config *C, *CE;
  1076. extern struct Hook AB_FromAddrBookHook;
  1077. extern struct Hook MA_ChangeSelectedHook, MA_ChangeFolderHook, MA_SendHook, MA_RescanIndexHook, MA_FlushIndexHook, MA_ApplyRulesHook, MA_DeleteDeletedHook, MA_DeleteOldHook;
  1078. extern struct Hook MA_LV_Cmp2Hook, MA_LV_FCmp2Hook, MA_LV_DspFuncHook, MA_LV_FDspFuncHook;
  1079. extern struct Hook PO_InitFolderListHook, MA_PO_MoveHook, PO_WindowHook;
  1080. extern struct Hook CO_OpenHook, CO_RemoteToggleHook;
  1081. extern struct Hook CO_EditSignatHook, CO_ToggleColHook, CO_GetDefaultPOPHook, CO_GetP3EntryHook, CO_PutP3EntryHook, CO_AddPOP3Hook, CO_DelPOP3Hook;
  1082. extern struct Hook CO_GetFOEntryHook, CO_PutFOEntryHook, CO_AddFolderHook, CO_DelFolderHook, CO_GetRUEntryHook, CO_PutRUEntryHook, CO_AddRuleHook, CO_DelRuleHook;
  1083. extern struct Hook CO_GetMVEntryHook, CO_PutMVEntryHook, CO_AddMimeViewHook, CO_DelMimeViewHook, CO_GetRXEntryHook, CO_PutRXEntryHook;
  1084. extern struct Hook FO_NewSeparatorHook, FO_NewFolderHook, FO_EditFolderHook, FO_DeleteFolderHook, FO_SetOrderHook;
  1085. extern struct Hook FI_OpenHook;
  1086. extern struct Hook DI_OpenHook;
  1087. extern struct Hook US_OpenHook;
  1088. extern struct Hook AB_OpenHook;
  1089. extern struct Hook RE_PrevNextHook, RE_LV_AttachDspFuncHook, RE_CloseHook;
  1090. extern struct Hook WR_NewMailHook, WR_EditHook;
  1091. extern struct Hook GeneralDesHook, RestartHook,DisposeModuleHook;
  1092. extern char *Status[9];
  1093. extern char *ContType[MAXCTYPE+1];
  1094. extern APTR ContTypeDesc[MAXCTYPE];
  1095. extern char *SigNames[3], *FolderNames[4], *SecCodes[5];
  1096. extern char *months[12], *wdays[7];
  1097. extern struct MUI_CustomClass *CL_BodyChunk, *CL_FolderList, *CL_AddressList, *CL_TextEditor, *CL_PageList;
  1098. extern struct MUI_CustomClass *CL_DDList, *CL_AttachList, *CL_DDString, *CL_MainWin;
  1099. extern struct Data2D Header;
  1100. extern int Mode2Group[12];
  1101. extern int BusyLevel;
  1102. ///
  1103. /// Function prototypes
  1104. extern char *Protection2(void);
  1105. extern int StringRequest(char *, int, char *, char *, char *, char *, char *, BOOL, APTR);
  1106. extern struct Folder *FolderRequest(char *, char *, char *, char *, struct Folder *, APTR);
  1107. extern struct Part *AttachRequest(char *, char *, char *, char *, int, int, APTR);
  1108. extern void InfoWindow(char *, char *, char *, APTR);
  1109. extern char *GetLine(FILE *, char *, int);
  1110. extern BOOL CopyFile(char *, FILE *, char *, FILE *);
  1111. extern BOOL RenameFile(char *, char *);
  1112. extern BOOL ConvertCRLF(char *, char *, BOOL);
  1113. extern void QuoteWordWrap(char *, int, char *, char *, FILE *);
  1114. extern void SimpleWordWrap(char *, int);
  1115. extern int FileSize(char *);
  1116. extern long FileProtection(char *);
  1117. extern int FileType(char *);
  1118. extern BOOL FileExists(char *);
  1119. extern BOOL PFExists(char *, char *);
  1120. extern int ReqFile(int, struct Object *, char *, int, char *, char *);
  1121. extern struct TempFile *OpenTempFile(char *);
  1122. extern void CloseTempFile(struct TempFile *);
  1123. extern BOOL DumpClipboard(FILE *);
  1124. extern void DeleteMailDir(char *, BOOL);
  1125. extern BOOL CheckPrinter(void);
  1126. extern int MatchNoCase(char *, char *);
  1127. extern BOOL MatchTT(char *, struct TranslationTable *, BOOL);
  1128. extern BOOL ISpace(char);
  1129. extern BOOL isSpace(int), isGraph(int), isAlNum(int);
  1130. extern char *StripUnderscore(char *);
  1131. extern char *GetNextLine(char *);
  1132. extern char *TrimStart(char *);
  1133. extern char *TrimEnd(char *);
  1134. extern char *Trim(char *);
  1135. extern char *itoa(int);
  1136. extern char *stccat(char *, char *, int);
  1137. extern char *stristr(char *, char *);
  1138. extern char *MyStrChr(char *, int);
  1139. extern char *AllocStrBuf(long);
  1140. extern void FreeStrBuf(char *);
  1141. extern char *StrBufCpy(char *, char *);
  1142. extern char *StrBufCat(char *, char *);
  1143. extern void FreeData2D(struct Data2D *);
  1144. extern char *AllocData2D(struct Data2D *, int);
  1145. extern APTR AllocCopy(APTR, int);
  1146. extern char *Encrypt(char *);
  1147. extern char *Decrypt(char *);
  1148. extern char *DescribeCT(char *);
  1149. extern char *BuildAddrName(char *,char *);
  1150. extern char *BuildAddrName2(struct Person *);
  1151. extern char *CreateFilename(char *);
  1152. extern BOOL CreateDirectory(char *);
  1153. extern char *GetFolderDir(struct Folder *);
  1154. extern char *GetMailFile(char *, struct Folder *, struct Mail *);
  1155. extern void ExtractAddress(char *, struct Person *);
  1156. extern char *DateStamp2String(struct DateStamp *, int);
  1157. extern long DateStamp2Long(struct DateStamp *);
  1158. extern char *GetTZ(void);
  1159. extern struct DateStamp *ScanDate(char *);
  1160. extern void FormatSize(int, char *);
  1161. extern void MyAddTail(struct Mail **, struct Mail *);
  1162. extern void MyRemove(struct Mail **, struct Mail *);
  1163. extern APTR WhichLV(struct Folder *);
  1164. extern struct MailInfo *GetMailInfo(struct Mail *);
  1165. extern char *ExpandText(char *, struct ExpandTextData *);
  1166. extern BOOL TransferMailFile(BOOL, struct Mail *, struct Folder *);
  1167. extern BOOL MailExists(struct Mail *, struct Folder *);
  1168. extern int SelectMessage(struct Mail *);
  1169. extern void DisplayMailList(struct Folder *, APTR);
  1170. extern struct Mail *AddMailToList(struct Mail *, struct Folder *);
  1171. extern void RemoveMailFromList(struct Mail *);
  1172. extern void ClearMailList(struct Folder *, BOOL);
  1173. extern struct Person *GetReturnAddress(struct Mail *);
  1174. extern char ShortCut(char *);
  1175. extern void SetHelp(APTR, APTR);
  1176. extern void DisposeModulePush(void *);
  1177. extern void DisposeModule(void *);
  1178. extern Object *MakeButton(char *);
  1179. extern Object *MakeCycle(char **, char *);
  1180. extern Object *MakeImage(UBYTE *);
  1181. extern void FreeBCImage(struct BodyChunkData *);
  1182. extern struct BodyChunkData *GetBCImage(char *);
  1183. extern struct BodyChunkData *LoadBCImage(char *);
  1184. extern Object *MakeCheck(char *);
  1185. extern Object *MakeCheckGroup(Object **, char *);
  1186. extern Object *MakeString(int, char *);
  1187. extern Object *MakePassString(char *);
  1188. extern Object *MakeInteger(int, char *);
  1189. extern Object *MakePGPKeyList(APTR *, BOOL, char *);
  1190. extern Object *MakePicture(char *);
  1191. extern Object *MakeStatusFlag(char *);
  1192. extern Object *MakeNumeric(int, int, BOOL);
  1193. extern void SetupToolbar(struct MUIP_Toolbar_Description *, char *, char *, UWORD);
  1194. extern void SetupMenu(int, struct NewMenu *, char *, char *, int);
  1195. extern int GetMUI(struct Object *,int);
  1196. extern char *GetMUIStringPtr(struct Object *);
  1197. extern void GetMUIString(char *,struct Object *);
  1198. extern void GetMUIText(char *,struct Object *);
  1199. extern int GetMUIInteger(struct Object *);
  1200. extern int GetMUINumer(struct Object *);
  1201. extern BOOL GetMUICheck(struct Object *);
  1202. extern int GetMUICycle(struct Object *);
  1203. extern int GetMUIRadio(struct Object *);
  1204. extern BOOL SafeOpenWindow(struct Object *);
  1205. extern ULONG DoSuperNew(struct IClass *, Object *, ULONG,...);
  1206. extern void SaveLayout(BOOL);
  1207. extern void LoadLayout(void);
  1208. extern ULONG ConvertKey(struct IntuiMessage *);
  1209. extern void DisplayStatistics(struct Folder *);
  1210. extern void SetupAppIcons(void);
  1211. extern BOOL EditorToFile(struct Object *, char *, struct TranslationTable *);
  1212. extern BOOL FileToEditor(char *, struct Object *);
  1213. extern BOOL LoadTranslationTable(struct TranslationTable **, char *);
  1214. extern int CompressMsgID(char *);
  1215. extern BOOL RepackMailFile(struct Mail *, int, char *);
  1216. extern char *StartUnpack(char *, char *, struct Folder *);
  1217. extern void FinishUnpack(char *);
  1218. extern BOOL DoPack(char *, char *, struct Folder *);
  1219. extern BOOL IsValidMailFile(char *);
  1220. extern void Busy(char *, char *, int, int);
  1221. extern void PlaySound(char *);
  1222. extern BOOL MatchExtension(char *, char *);
  1223. extern char *IdentifyFile(char *);
  1224. extern void InsertAddresses(APTR, char **, BOOL);
  1225. extern char *AllocReqText(char *);
  1226. extern void PopUp(void);
  1227. extern void AppendLog(int, char *, void *, void *, void *, void *);
  1228. extern void AppendLogNormal(int, char *, void *, void *, void *, void *);
  1229. extern void AppendLogVerbose(int, char *, void *, void *, void *, void *);
  1230. extern int PGPCommand(char *, char *, int);
  1231. extern void PGPGetPassPhrase(void);
  1232. extern void PGPClearPassPhrase(BOOL);
  1233. extern BOOL ExecuteCommand(char *, BOOL, BPTR);
  1234. extern int GetSimpleID(void);
  1235. extern void GotoURL(char *);
  1236.  
  1237. extern void MA_SetSortFlag(void);
  1238. extern BOOL MA_PromptFolderPassword(struct Folder *, APTR);
  1239. extern void MA_DeleteSingle(struct Mail *, BOOL);
  1240. extern BOOL MA_ReadHeader(FILE *);
  1241. extern void MA_ValidateStatus(struct Folder *);
  1242. extern char *MA_IndexFileName(struct Folder *);
  1243. extern BOOL MA_SaveIndex(struct Folder *);
  1244. extern int  MA_LoadIndex(struct Folder *, BOOL);
  1245. extern BOOL MA_GetIndex(struct Folder *);
  1246. extern void MA_UpdateIndexes(BOOL);
  1247. extern void MA_ExpireIndex(struct Folder *);
  1248. extern void MA_FlushIndexes(BOOL);
  1249. extern char *MA_NewMailFile(struct Folder *, char *, int);
  1250. extern struct Mail *MA_GetActiveMail(struct Folder *, struct Folder **, int *);
  1251. extern void MA_About(void);
  1252. extern struct ExtendedMail *MA_ExamineMail(struct Folder *, char *, char *, BOOL);
  1253. extern void MA_FreeEMailStruct(struct ExtendedMail *);
  1254. extern void MA_ScanMailBox(struct Folder *);
  1255. extern void MA_ChangeFolder(struct Folder *);
  1256. extern SAVEDS void MA_ChangeSelectedFunc(void);
  1257. extern SAVEDS void MA_SetMessageInfoFunc(void);
  1258. extern SAVEDS void MA_SetFolderInfoFunc(void);
  1259. extern struct Mail **MA_CreateMarkedList(APTR);
  1260. extern void MA_ChangeTransfer(BOOL);
  1261. extern int MA_NewNew(struct Mail *, int);
  1262. extern int MA_NewEdit(struct Mail *, int);
  1263. extern int MA_NewBounce(struct Mail *, int);
  1264. extern int MA_NewForward(struct Mail **, int);
  1265. extern int MA_NewReply(struct Mail **, int);
  1266. extern int MA_NewMessage(int, int);
  1267. extern void MA_MoveCopy(struct Mail *, struct Folder *, struct Folder *, BOOL);
  1268. extern void MA_GetAddress(struct Mail **);
  1269. extern void MA_ChangeSubject(struct Mail *, char *);
  1270. extern void MA_RemoveAttach(struct Mail *);
  1271. extern void MA_SetMailStatus(struct Mail *, int);
  1272. extern void MA_SetStatusTo(int);
  1273. extern BOOL MA_ImportMessages(char *);
  1274. extern BOOL MA_ExportMessages(BOOL, char *, BOOL);
  1275. extern void MA_DeleteMessage(BOOL delatonce, BOOL force);
  1276. extern BOOL MA_StartMacro(int, char *);
  1277. extern int MA_AllocRules(struct Search **, int);
  1278. extern void MA_FreeRules(struct Search **, int);
  1279. extern BOOL MA_ExecuteRuleAction(struct Rule *, struct Mail *);
  1280. extern BOOL MA_SendMList(struct Mail **);
  1281. extern BOOL MA_Send(int);
  1282. extern void MA_PopNow(int, int);
  1283. extern void MA_SetupDynamicMenus(void);
  1284. extern char *MA_GetRealSubject(char *);
  1285. extern int MA_CmpFunc(struct Mail **, struct Mail **);
  1286. extern void MA_MakeFOFormat(APTR);
  1287. extern void MA_MakeMAFormat(APTR);
  1288. extern SAVEDS ASM long MA_LV_DspFunc(REG(a0) struct Hook *, REG(a2) char **, REG(a1) struct Mail *);
  1289. extern struct MA_ClassData *MA_New(void);
  1290.  
  1291. extern void CO_NewPrefsFile(char *);
  1292. extern BOOL CO_IsValid(void);
  1293. extern struct Rule *CO_NewRule(void);
  1294. extern struct POP3 *CO_NewPOP3(struct Config *, BOOL);
  1295. extern struct MimeView *CO_NewMimeView(void);
  1296. extern void CO_SetDefaults(struct Config *, int);
  1297. extern struct Rule *CO_NewRule(void);
  1298. extern void CO_RuleGhost(struct CO_GUIData *, struct Rule *);
  1299. extern BOOL CO_LoadConfig(struct Config *, char *, struct Folder ***);
  1300. extern void CO_SaveConfig(struct Config *, char *);
  1301. extern void CO_Validate(struct Config *, BOOL);
  1302. extern void CO_SetConfig(void);
  1303. extern void CO_GetConfig(void);
  1304. extern void CO_FreeConfig(struct Config *);
  1305. extern SAVEDS ASM long CO_PL_DspFunc(REG(a0) struct Hook *, REG(a2) char **, REG(a1) struct PageList *);
  1306. extern struct CO_ClassData *CO_New(void);
  1307. extern APTR CO_Page0(struct CO_ClassData *), CO_Page1(struct CO_ClassData *), CO_Page2(struct CO_ClassData *), CO_Page3(struct CO_ClassData *), CO_Page4(struct CO_ClassData *), CO_Page5(struct CO_ClassData *), CO_Page6(struct CO_ClassData *), CO_Page7(struct CO_ClassData *);
  1308. extern APTR CO_Page8(struct CO_ClassData *), CO_Page9(struct CO_ClassData *), CO_Page10(struct CO_ClassData *),CO_Page11(struct CO_ClassData *), CO_Page12(struct CO_ClassData *),CO_Page13(struct CO_ClassData *),CO_Page14(struct CO_ClassData *),CO_Page15(struct CO_ClassData *);
  1309.  
  1310. extern struct Folder **FO_CreateList(void);
  1311. extern struct Folder *FO_GetCurrentFolder(void);
  1312. extern struct Folder *FO_GetFolderRexx(char *, int *);
  1313. extern struct Folder *FO_GetFolderByName(char *, int *);
  1314. extern struct Folder *FO_GetFolderByType(int, int *);
  1315. extern SAVEDS void FO_DeleteFolderFunc(void);
  1316. extern BOOL FO_LoadConfig(struct Folder *);
  1317. extern void FO_SaveConfig(struct Folder *);
  1318.  
  1319. extern int FO_GetFolderPosition(struct Folder *);
  1320. extern struct Folder *FO_NewFolder(int, char *, char *);
  1321. extern BOOL FO_CreateFolder(int, char *, char *);
  1322. extern BOOL FO_LoadTree(char *);
  1323. extern BOOL FO_SaveTree(char *);
  1324. extern struct FO_ClassData *FO_New(void);
  1325.  
  1326. extern APTR AB_GotoEntry(char *alias);
  1327. extern void AB_InsertAddress(APTR, char *, char *, char *);
  1328. extern char *AB_CompleteAlias(char *);
  1329. extern char *AB_ExpandBD(long date);
  1330. extern long AB_CompressBD(char *datestr);
  1331. extern void AB_CheckBirthdates(void);
  1332. extern STACKEXT int AB_SearchEntry(struct MUIS_Listtree_TreeNode *list, char *, int, int *, struct  MUIS_Listtree_TreeNode **);
  1333. extern BOOL AB_LoadTree(char *, BOOL, BOOL);
  1334. extern BOOL AB_SaveTree(char *);
  1335. extern SAVEDS void AB_SaveABookFunc(void);
  1336. extern SAVEDS void AB_DeleteFunc(void);
  1337. extern STACKEXT BOOL AB_FindEntry(struct MUIS_Listtree_TreeNode *, char *, int mode, char **);
  1338. extern void AB_MakeABFormat(APTR);
  1339. extern SAVEDS ASM long AB_LV_DspFunc(REG(a0) struct Hook *, REG(a2) char **, REG(a1) struct MUIS_Listtree_TreeNode *);
  1340. extern struct AB_ClassData *AB_New(void);
  1341.  
  1342. extern int EA_Init(int, struct MUIS_Listtree_TreeNode *);
  1343. extern void EA_Setup(int, struct ABEntry *);
  1344. extern void EA_InsertBelowActive(struct ABEntry *, int);
  1345. extern void EA_FixAlias(struct ABEntry *, BOOL);
  1346. extern void EA_SetDefaultAlias(struct ABEntry *);
  1347. extern void EA_AddSingleMember(Object *, struct MUIS_Listtree_TreeNode *);
  1348. extern STACKEXT void EA_AddMembers(Object *, struct MUIS_Listtree_TreeNode *);
  1349. extern void EA_SetDefaultAlias(struct ABEntry *);
  1350. extern void EA_SetPhoto(int, char *);
  1351. extern int EA_Open(int);
  1352. extern struct EA_ClassData *EA_New(int, int);
  1353.  
  1354. extern void RE_DoMDN(int MDNtype, struct Mail *mail);
  1355. extern struct Mail *RE_GetQuestion(long);
  1356. extern struct Mail *RE_GetAnswer(long);
  1357. extern BOOL RE_DecodePart(struct Part *);
  1358. extern STACKEXT void RE_ProcessHeader(char *, char *, BOOL, char *);
  1359. extern void RE_CleanupMessage(int);
  1360. extern BOOL RE_LoadMessage(int, int);
  1361. extern char *RE_ReadInMessage(int, int);
  1362. extern void RE_SaveAll(int, char *);
  1363. extern char *RE_SuggestName(struct Mail *);
  1364. extern BOOL RE_Export(int, char *, char *, char *, int, BOOL, BOOL, char *);
  1365. extern void RE_SaveDisplay(int, FILE *);
  1366. extern void RE_DisplayMIME(char *, char *);
  1367. extern void RE_DisplayMessage(int);
  1368. extern void RE_InitPrivateRC(struct Mail *, int);
  1369. extern void RE_FreePrivateRC(void);
  1370. extern void RE_ReadMessage(int, struct Mail *);
  1371. extern int RE_Open(int, BOOL);
  1372. extern struct RE_ClassData *RE_New(int, BOOL);
  1373.  
  1374. extern int WR_ResolveName(int, char *, char **, BOOL);
  1375. extern char *WR_ExpandAddresses(int, char *, BOOL, BOOL);
  1376. extern void WR_AddSignature(char *, int);
  1377. extern void WR_OpenWin(int);
  1378. extern void WR_FromAddrBook(struct Object *);
  1379. extern SAVEDS ASM void WR_GetFileEntry(REG(a1) int *);
  1380. extern SAVEDS ASM void WR_PutFileEntry(REG(a1) int *);
  1381. extern SAVEDS ASM void WR_Edit(REG(a1) int *);
  1382. extern void EmitHeader(FILE *, char *, char *);
  1383. extern BOOL WriteOutMessage(struct Compose *);
  1384. extern struct WritePart *NewPart(int);
  1385. extern int WR_Open(int, BOOL);
  1386. extern void WR_SetupOldMail(int);
  1387. extern int WhichEncodingForFile(char *, char *);
  1388. extern void FreePartsList(struct WritePart *);
  1389. extern BOOL WR_AddFileToList(int, char *, char *, BOOL);
  1390. extern char *WR_AutoSaveFile(int);
  1391. extern void WR_NewMail(int, int);
  1392. extern void WR_Cleanup(int);
  1393. extern void WR_App(int, struct AppMessage *);
  1394. extern struct WR_ClassData *WR_New(int);
  1395. extern struct WR_ClassData *WR_NewBounce(int);
  1396.  
  1397. extern BOOL TR_IsOnline(void);
  1398. extern BOOL TR_OpenTCPIP(void);
  1399. extern void TR_CloseTCPIP(void);
  1400. extern void TR_Cleanup(void);
  1401. extern BOOL TR_DownloadURL(char *, char *, char *, char *filename);
  1402. extern BOOL TR_SendPopCmd(char *, char *, char *, int);
  1403. extern int  TR_RecvDat(char *);
  1404. extern BOOL TR_SendSMTPCmd(char *, char *);
  1405. extern BOOL TR_SendDat(char *);
  1406. extern void TR_SetWinTitle(BOOL, char *);
  1407. extern int TR_Connect(char *, int);
  1408. extern void TR_Disconnect(void);
  1409. extern int  TR_ConnectPOP(int);
  1410. extern void TR_DisplayMailList(BOOL);
  1411. extern void TR_GetMessageList_IMPORT(FILE *);
  1412. extern BOOL TR_GetMessageList_GET(int);
  1413. extern void TR_GetMailFromNextPOP(BOOL, int, int);
  1414. extern BOOL TR_ProcessSEND(struct Mail **);
  1415. extern BOOL TR_ProcessEXPORT(char *, struct Mail **, BOOL);
  1416. extern SAVEDS void TR_ProcessIMPORTFunc(void);
  1417. extern void TR_GetUIDL(void);
  1418. extern void TR_GetMessageDetails(struct Mail *, int);
  1419. extern int TR_CheckMessage(int, int, int);
  1420. extern void TR_CompleteMsgList(void);
  1421. extern void TR_DisconnectPOP(void);
  1422. extern void TR_NewMailAlert(void);
  1423. extern void TR_Open(void);
  1424. extern struct TR_ClassData *TR_New(int);
  1425.  
  1426. extern void ER_NewError(char *, char *, char *);
  1427. extern struct ER_ClassData *ER_New(void);
  1428.  
  1429. extern void FI_SearchGhost(struct SearchGroup *, BOOL disabled);
  1430. extern APTR FI_ConstructSearchGroup(struct SearchGroup *, BOOL);
  1431. extern BOOL MyMatch(BOOL, char *, char *);
  1432. extern BOOL FI_PrepareSearch(struct Search *, int, BOOL, int, int, int, BOOL, char *, char *);
  1433. extern BOOL FI_DoSearch(struct Search *, struct Mail *);
  1434. extern BOOL FI_DoComplexSearch(struct Search *, int, struct Search *, struct Mail *);
  1435. extern struct FI_ClassData *FI_New(void);
  1436.  
  1437. extern struct DI_ClassData *DI_New(void);
  1438.  
  1439. extern BOOL US_Login(char *, char *, char *, char *);
  1440. extern struct User *US_GetCurrentUser(void);
  1441. extern struct US_ClassData *US_New(BOOL);
  1442.  
  1443. extern void NewLine(FILE *, BOOL);
  1444. extern void to64(FILE *, FILE *, BOOL);
  1445. extern void toqp(FILE *, FILE *);
  1446. extern void touue(FILE *, FILE *);
  1447. extern void fromform(FILE *, FILE *, struct TranslationTable *);
  1448. extern void fromqp(FILE *, FILE *, struct TranslationTable *);
  1449. extern void from64(FILE *, FILE *, struct TranslationTable *, BOOL);
  1450. extern void fromuue(FILE *, FILE *);
  1451. extern void fromqptxt(char *, char *, struct TranslationTable *);
  1452. extern void from64txt(char *, char *, struct TranslationTable *);
  1453. extern void fromuuetxt(char **, FILE *);
  1454. extern BOOL DoesNeedPortableNewlines(char *);
  1455.  
  1456. extern BOOL InitClasses(void);
  1457. extern void ExitClasses(void);
  1458. ///
  1459.